//
//  ThemeManager.m
//  微blog
//
//  Created by Jorn.Wu on 15/8/21.
//  Copyright (c) 2015年 Jorn.Wu(jorn_wza@sina.com). All rights reserved.
//

#import "ThemeManager.h"

@interface ThemeManager ()

/**
 * 主题配置信息
 */
@property (nonatomic, copy) NSDictionary *themeConfig;

@end

@implementation ThemeManager

/**
 * 创建单例方法
 */
+ (instancetype)defualtManager{
    
    static ThemeManager *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

        manager = [[self alloc] init];

    });
    
    return manager;
    
}


/**
 * 重写init
 */
- (instancetype)init{
    if (self = [super init]) {
        
        /**
         * 1、主题名字,先从沙盒中读取，没有在设置默认
         */
        NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:kUserDefualtThemeKey];
        
        if (name) {     //保存主题
            _themeName = name;
        }else {     //未保存过主题
            _themeName = kDefualtThemeName;
            
            /**
             * 将主题存储到沙盒中（启动时直接从沙盒中读取）
             */
            [[NSUserDefaults standardUserDefaults] setObject:_themeName forKey:kUserDefualtThemeKey];
        }

        
        /**
         * 2、根据主题名字读取主题配置信息（theme.plist），字典中 key（主题名字），value（资源路径）
         */
        NSString *configPath = [[NSBundle mainBundle] pathForResource:@"theme" ofType:@"plist"];
        self.themeConfig = [NSDictionary dictionaryWithContentsOfFile:configPath];
  
    }
    return self;
}


/**
 * 重写themeName的set方法，在切换主题是发出通知
 */
- (void)setThemeName:(NSString *)themeName{
    
    if (![_themeName isEqualToString:themeName]) {      //如果为不同的主题，才调用
        _themeName = [themeName copy];
        
        /**
         * 将主题存储到沙盒中（启动时直接从沙盒中读取）
         */
        [[NSUserDefaults standardUserDefaults] setObject:_themeName forKey:kUserDefualtThemeKey];
        
        /**
         * 发出切换主题通知
         */
        [[NSNotificationCenter defaultCenter] postNotificationName:kThemeDidChangedNotification object:nil userInfo:nil];
    }
}


/**
 * 获取主题包的路径
 */
- (NSString *)themePath{
    
    /**
     * 1、获取资源路径
     */
    NSString *bundlePaht = [[NSBundle mainBundle] resourcePath];
    
    /**
     * 2、获取theme路径
     */
    NSString *themePath = [self.themeConfig objectForKey:_themeName];
    
    /**
     * 3、拼接完整路径
     */
    NSString *path = [bundlePaht stringByAppendingPathComponent:themePath];
    
    return path;
    
}


#pragma mark -获取相应主题包中的图片

/**
 * 根据图片名获取响应主题包中的图片
 */
- (UIImage *)getThemeImage:(NSString *)imageName{
    
    if (imageName.length == 0) {        //name为空
        return nil;
    }
    
    /**
     * 1、获取主题包路径
     */
    NSString *themePath = [self themePath];
    
    /**
     * 2、拼接图片路径
     */
    NSString *filePath = [themePath stringByAppendingPathComponent:imageName];
    
    /**
     * 读取图片
     */
    UIImage *image = [UIImage imageWithContentsOfFile:filePath];
    return image;
    
    
}


#pragma mark -取得颜色

/**
 * 根据颜色的名字（key）取得颜色
 */
- (UIColor *)getThemeColor:(NSString *)colorName{
    
    if (colorName.length == 0) {        //name为空
        return nil;
    }
    
    /**
     * 1、获取主题包路径
     */
    NSString *themePath = [self themePath];
    
    /**
     * 2、拼接图片路径
     */
    NSString *colorConfigPath = [themePath stringByAppendingPathComponent:@"config.plist"];

    NSDictionary *colorDic = [NSDictionary dictionaryWithContentsOfFile:colorConfigPath];
    
    /**
     * 读取图片
     */
    NSDictionary *colorIfon = colorDic[colorName];
    CGFloat red = [colorIfon[@"R"] floatValue];
    CGFloat green = [colorIfon[@"G"] floatValue];
    CGFloat blue = [colorIfon[@"B"] floatValue];
    CGFloat alpha = 1;
    if ([[colorIfon allKeys] containsObject:@"alpha"]) {        //如果有alpha参数
        alpha = [colorIfon[@"alpha"] floatValue];
    }
    
    return kColorWithRGBA(red, green, blue, alpha);
    
}




@end
